<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>

    <div id="app"></div>

    <!-- <Panel>
        <Group>
            <List></List>
        </Group>
        <Group>
            <List></List>
        </Group>
        <Group>
            <List></List>
        </Group>
    </Panel> -->

    <script type="text/babel">

        var users = ['刘伟','莫涛','钟毅'];
        var users2 = ['张三','李四','王五'];

        /**
         * 如果一个函数或类作为一个组件去使用的话，那么名称必须首字母大写
         * 如果使用类实现组件，那么需要继承一个父类：React.Component
         * 组件类必须实现一个render()的方法
         * props：传入的参数必须是用对象下的一个属性props来接收
         */

        /**
         * 组件间通信
         * 通过组件的属性进行传递
         * 只支持直接的父子组件之间的传递，不支持多层嵌套中的父子组件之间
         * 不能反向传递，只能由父组件传递给子组件
		 * 子组件通过 props 接受父组件传过来的数据及方法
		 * 子组件要与父组件通信，需要通过调用父组件传递过来的方法
         */

        class List extends React.Component {

            render() {
                return this.props.data.map( (item, index) => {
                    return <li key={index}>{item}</li>
                } )
            }

        }

        ReactDOM.render(
            <div>
                <ul>
                    <List data={users} />
                </ul>

                <ul>
                    <List data={users2} />
                </ul>
            </div>,
            document.getElementById('app')
        );
    </script>

</body>
</html>
